# create by fanfan on 2020/3/28 0028
import numpy as np
from keras.preprocessing import sequence
from keras.models import Sequential
from keras.layers import Dense,Dropout,Embedding,LSTM,Bidirectional
from keras.datasets import imdb

max_features = 20000
maxlen = 100
batch_size = 32

print("loading data..")
(x_train,y_train),(x_test,y_test) = imdb.load_data(num_words=max_features)
print(len(x_train),'train sequences')
print(len(x_test),'test sequences')

print("pad sequences (samples x time)")
x_train = sequence.pad_sequences(x_train,maxlen=maxlen)
x_test = sequence.pad_sequences(x_test,maxlen=maxlen)
print('x_train shape:',x_train.shape)
print("x_test shape:",x_test.shape)

y_train = np.array(y_train)
y_test = np.array(y_test)

model = Sequential()
model.add(Embedding(max_features,128,input_length=maxlen))
model.add(Bidirectional(LSTM(64)))
model.add(Dropout(0.5))
model.add(Dense(1,activation='sigmoid'))

model.compile("adam",'binary_crossentropy',metrics=['accuracy'])
print("Train...")
model.fit(
    x_train,
    y_train,
    epochs=4,
    validation_data=[x_test,y_test]
)